home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / tp_asm.exe / lha / USAGE.PAS < prev    next >
Pascal/Delphi Source File  |  1989-07-31  |  10KB  |  411 lines

  1. {═════════════════════════════ USAGE.PAS ═════════════════════════════}
  2. {  Non-Executable file with sample assembly language instructions     }
  3. {═════════════════════════════ USAGE.PAS ═════════════════════════════}
  4.  
  5. (*══════════════════════════════ NOTES ═══════════════════════════════*
  6.  
  7.  This file contains one or more examples of each 8086 instruction
  8.  mnemonic with a variety of combinations of operand types.  It is not
  9.  intended as a replacement for a tutorial or reference on assembly
  10.  language programming, however in some cases a couple of examples
  11.  of typical instruction syntax is all that you may need.  Please see
  12.  the  various .PAS files (on the registration disk or in the archive
  13.  TP-ASM.ZIP) for examples of assembly language in the context of
  14.  working programs.
  15.  
  16.  
  17.  The following symbols, used in the example instructions, can
  18.  represent a variety of Pascal and/or Assembly symbols as indicated
  19.  in the discussion which follows:
  20.  
  21.    Immediate_Byte   Immediate_Word
  22.    MemoryVar_Byte   MemoryVar_Word   MemoryVarDWord   MemoryVariable
  23.    MemoryReg_Byte   MemoryReg_Word
  24.    CodeLabelSHORT   CodeLabel_NEAR   CodeLabel_FAR
  25.  
  26.  
  27.  Immediate_Byte can be:
  28.   a standard Pascal Constant, an Assembly EQU Constant, or a numeric
  29.   value or expression in the range -128 to 255
  30.  
  31.  Immediate_Word can be:
  32.   a standard Pascal Constant, an Assembly EQU Constant, or a numeric
  33.   value or expression in the range -32768 to 65535
  34.  
  35.  MemoryVar_Byte can be:
  36.   a Pascal BOOLEAN, BYTE, CHAR, or SHORTINT Variable or Typed Constant
  37.   or an Assembly BYTE Variable defined via DB or EQU B [..]
  38.  
  39.  MemoryReg_Byte can be:
  40.   a MemoryVar_Byte or a Byte register (Al, Ah, Bl, Bh, Cl, Ch, Dl, Dh)
  41.  
  42.  MemoryVar_Word can be:
  43.   a Pascal INTEGER or WORD Variable or Typed Constant
  44.   or an Assembly WORD Variable defined via DW or EQU W [..]
  45.  
  46.  MemoryReg_Word can be:
  47.   a MemoryVar_Word or a Word register (Ax, Bx, Cx, Dx, Si, Di, Bp, Sp)
  48.  
  49.  MemoryVarDWord can be:
  50.   a Pascal LONGINT, POINTER (^INTEGER, ^BYTE, etc), or PROCEDURE
  51.   Variable or Typed Constant, a Proc/Function VAR or UNTYPED Parameter, 
  52.   or an Assembly DWORD Variable defined via DD or EQU D [..]
  53.  
  54.  MemoryVariable can be:
  55.   a MemoryVar_Byte, MemoryVar_Word, or MemoryVarDWord,
  56.   or a Pascal Variable of any other Type (e.g. STRING)
  57.  
  58.  CodeLabelSHORT can be:
  59.   an Assembly Code Label within the current Assemble/Internal statement,
  60.   or a Pascal Label within the current block
  61.  
  62.   * TP&Asm automatically utilizes the most efficient (2-byte) 
  63.     instruction form whenever the label is within 127 bytes (forward) 
  64.     or 128 bytes (back) from the beginning of the next instruction 
  65.  
  66.  CodeLabel_NEAR can be:
  67.   an Assembly Code Label within the current Assemble/Internal statement,
  68.   a Pascal Label within the current block, or a Pascal Procedure or
  69.   Function identifier defined in the current Unit in the {$F-} state
  70.  
  71.  CodeLabel_FAR must be:
  72.   a Pascal Procedure, Function, or Method identifier defined in a
  73.   separate Unit or in the current Unit in the {$F+} state.
  74.  
  75.  Dh is used as a typical Byte register.  It can be replaced by any of
  76.   the following Byte registers:  Al, Ah, Bl, Bh, Cl, Ch, Dl, or Dh
  77.  
  78.  Si is used as a typical Word register.  It can be replaced by any of
  79.   the following Word registers:  Ax, Bx, Cx, Dx, Si, Di, Bp, or Sp
  80.  
  81.  
  82.  The following list contains separate examples for instructions using
  83.  the Accumulator (AL or AX) in cases where the Accumulator version uses
  84.  a different opcode.  Instructions using the Accumulator are often one
  85.  byte shorter than instructions using another register.
  86.  
  87. *══════════════════════════════ NOTES ═══════════════════════════════*)
  88.  
  89.  
  90. {- Far Procedure -}
  91. {$F+} 
  92. PROCEDURE
  93.   CodeLabel_FAR;   {$F-}    BEGIN  END;
  94.  
  95. {- Standard constants -}
  96. CONST
  97.   Immediate_Byte = 5;
  98.   Immediate_Word = $0213;
  99.  
  100. {- Typed Constants -}
  101. CONST
  102.   MemoryVar_Byte: BOOLEAN = TRUE;
  103.   MemoryReg_Byte: CHAR = 'A';
  104.  
  105. {- Global Variables -}
  106. VAR
  107.   MemoryVar_Word: WORD;
  108.   MemoryReg_Word: INTEGER;
  109.  
  110.  
  111. PROCEDURE OptestProc;
  112.  
  113. {- Near Label -}
  114. Label 
  115.   CodeLabel_NEAR;
  116.  
  117. {- Local Variables -}
  118. VAR
  119.   MemoryVarDWord: POINTER;
  120.   MemoryVariable: STRING[34];
  121.  
  122. BEGIN
  123. Assemble
  124.  
  125.  AAA
  126.  AAD
  127.  AAM
  128.  AAS
  129.  ADC AL,Immediate_Byte
  130.  ADC AX,Immediate_Word
  131.  ADC MemoryReg_Byte,Immediate_Byte
  132.  ADC MemoryReg_Byte,Dh
  133.  ADC MemoryReg_Word,Immediate_Byte
  134.  ADC MemoryReg_Word,Immediate_Word
  135.  ADC MemoryReg_Word,Si
  136.  ADC Dh,MemoryReg_Byte
  137.  ADC Si,MemoryReg_Word
  138.  ADD AL,Immediate_Byte
  139.  ADD AX,Immediate_Word
  140.  ADD MemoryReg_Byte,Immediate_Byte
  141.  ADD MemoryReg_Byte,Dh
  142.  ADD MemoryReg_Word,Immediate_Byte
  143.  ADD MemoryReg_Word,Immediate_Word
  144.  ADD MemoryReg_Word,Si
  145.  ADD Dh,MemoryReg_Byte
  146.  ADD Si,MemoryReg_Word
  147.  AND AL,Immediate_Byte
  148.  AND AX,Immediate_Word
  149.  AND MemoryReg_Byte,Immediate_Byte
  150.  AND MemoryReg_Byte,Dh
  151.  AND MemoryReg_Word,Immediate_Word
  152.  AND MemoryReg_Word,Si
  153.  AND Dh,MemoryReg_Byte
  154.  AND Si,MemoryReg_Word
  155.  CALL CodeLabel_FAR
  156.  CALL CodeLabel_NEAR
  157.  CALL MemoryVarDWord
  158.  CALL MemoryReg_Word
  159.  CBW
  160.  CLC
  161.  CLD
  162.  CLI
  163.  CMC
  164.  CMP AL,Immediate_Byte
  165.  CMP AX,Immediate_Word
  166.  CMP MemoryReg_Byte,Immediate_Byte
  167.  CMP MemoryReg_Byte,Dh
  168.  CMP MemoryReg_Word,Immediate_Byte
  169.  CMP MemoryReg_Word,Immediate_Word
  170.  CMP MemoryReg_Word,Si
  171.  CMP Dh,MemoryReg_Byte
  172.  CMP Si,MemoryReg_Word
  173.  CMPSB
  174.  CMPSW
  175.  CWD
  176.  DAA
  177.  DAS
  178.  DEC MemoryReg_Byte
  179.  DEC MemoryReg_Word
  180.  DEC Si
  181.  DIV MemoryReg_Byte
  182.  DIV MemoryReg_Word
  183.  HLT
  184.  IDIV MemoryReg_Byte
  185.  IDIV MemoryReg_Word
  186.  IMUL MemoryReg_Byte
  187.  IMUL MemoryReg_Word
  188.  IN AL,DX
  189.  IN AL,Immediate_Byte
  190.  IN AX,DX
  191.  IN AX,Immediate_Byte
  192.  INC MemoryReg_Byte
  193.  INC MemoryReg_Word
  194.  INC Si
  195.  INT 3
  196.  INT Immediate_Byte
  197.  INTO
  198.  IRET
  199.  JA CodeLabelSHORT
  200.  JAE CodeLabelSHORT
  201.  JB CodeLabelSHORT
  202.  JBE CodeLabelSHORT
  203.  JC CodeLabelSHORT
  204.  JCXZ CodeLabelSHORT
  205.  JE CodeLabelSHORT
  206.  JG CodeLabelSHORT
  207.  JGE CodeLabelSHORT
  208.  JL CodeLabelSHORT
  209.  JLE CodeLabelSHORT
  210.  JMP CodeLabelSHORT
  211.  JMP CodeLabel_FAR
  212.  JMP CodeLabel_NEAR
  213.  JMP MemoryReg_Word
  214.  JMP MemoryVarDWord
  215.  JNA CodeLabelSHORT
  216.  JNAE CodeLabelSHORT
  217.  JNB CodeLabelSHORT
  218.  JNBE CodeLabelSHORT
  219.  JNC CodeLabelSHORT
  220.  JNE CodeLabelSHORT
  221.  JNG CodeLabelSHORT
  222.  JNGE CodeLabelSHORT
  223.  JNL CodeLabelSHORT
  224.  JNLE CodeLabelSHORT
  225.  JNO CodeLabelSHORT
  226.  JNP CodeLabelSHORT
  227.  JNS CodeLabelSHORT
  228.  JNZ CodeLabelSHORT
  229.  JO CodeLabelSHORT
  230.  JP CodeLabelSHORT
  231.  JPE CodeLabelSHORT
  232.  JPO CodeLabelSHORT
  233.  JS CodeLabelSHORT
  234.  JZ CodeLabelSHORT
  235. CodeLabelSHORT:
  236.  LAHF
  237.  LDS Si,MemoryVarDWord
  238.  LEA Si,MemoryVariable
  239.  LES Si,MemoryVarDWord
  240.  LOCK Mov Ax,[Si+2]
  241.  LODSB
  242.  LODSW
  243.  LOOP CodeLabelSHORT
  244.  LOOPE CodeLabelSHORT
  245.  LOOPNE CodeLabelSHORT
  246.  LOOPNZ CodeLabelSHORT
  247.  LOOPZ CodeLabelSHORT
  248.  MOV AL,MemoryVar_Byte
  249.  MOV AX,MemoryVar_Word
  250.  MOV DS,MemoryVar_Word
  251.  MOV DS,Si
  252.  MOV MemoryReg_Byte,Immediate_Byte
  253.  MOV MemoryReg_Byte,Dh
  254.  MOV ES,MemoryVar_Word
  255.  MOV ES,Si
  256.  MOV MemoryVar_Word,CS
  257.  MOV Si,CS
  258.  MOV MemoryVar_Word,DS
  259.  MOV Si,DS
  260.  MOV MemoryVar_Word,ES
  261.  MOV Si,ES
  262.  MOV MemoryReg_Word,Immediate_Word
  263.  MOV MemoryReg_Word,Si
  264.  MOV MemoryVar_Word,SS
  265.  MOV Si,SS
  266.  MOV Dh,MemoryReg_Byte
  267.  MOV Dh,Immediate_Byte
  268.  MOV Si,MemoryReg_Word
  269.  MOV Si,Immediate_Word
  270.  MOV SS,MemoryVar_Word
  271.  MOV SS,Si
  272.  MOV MemoryVar_Byte,AL
  273.  MOV MemoryVar_Word,AX
  274.  MOVSB
  275.  MOVSW
  276.  MUL MemoryReg_Byte
  277.  MUL MemoryReg_Word
  278.  NEG MemoryReg_Byte
  279.  NEG MemoryReg_Word
  280.  NOP
  281.  NOT MemoryReg_Byte
  282.  NOT MemoryReg_Word
  283.  OR AL,Immediate_Byte
  284.  OR AX,Immediate_Word
  285.  OR MemoryReg_Byte,Immediate_Byte
  286.  OR MemoryReg_Byte,Dh
  287.  OR MemoryReg_Word,Immediate_Word
  288.  OR MemoryReg_Word,Si
  289.  OR Dh,MemoryReg_Byte
  290.  OR Si,MemoryReg_Word
  291.  OUT DX,AL
  292.  OUT DX,AX
  293.  OUT Immediate_Byte,AL
  294.  OUT Immediate_Byte,AX
  295.  POP DS
  296.  POP ES
  297.  POP MemoryVar_Word
  298.  POP Si
  299.  POP SS
  300.  POPF
  301.  PUSH CS
  302.  PUSH DS
  303.  PUSH ES
  304.  PUSH MemoryVar_Word
  305.  PUSH Si
  306.  PUSH SS
  307.  PUSHF
  308.  RCL MemoryReg_Byte,1
  309.  RCL MemoryReg_Byte,CL
  310.  RCL MemoryReg_Word,1
  311.  RCL MemoryReg_Word,CL
  312.  RCR MemoryReg_Byte,1
  313.  RCR MemoryReg_Byte,CL
  314.  RCR MemoryReg_Word,1
  315.  RCR MemoryReg_Word,CL
  316.  REP MovSB
  317.  REPE CmpSB
  318.  REPNE CmpSB
  319.  REPNZ ScaSB
  320.  REPZ ScaSB
  321.  RET
  322.  RET Immediate_Word
  323.  RETF
  324.  RETF Immediate_Word
  325.  ROL M